#ifndef GUARD_CONSTANTS_BATTLE_ANIM_H
#define GUARD_CONSTANTS_BATTLE_ANIM_H

// Sprites start at 10000 and thus must be subtracted of 10000 to account for the true index.
#define GET_TRUE_SPRITE_INDEX(i) ((i - ANIM_SPRITES_START))

// Particle ids.
#define ANIM_SPRITES_START 10000

#define ANIM_TAG_BONE                       10000
#define ANIM_TAG_SPARK                      10001
#define ANIM_TAG_PENCIL                     10002
#define ANIM_TAG_AIR_WAVE                   10003
#define ANIM_TAG_ORB                        10004
#define ANIM_TAG_SWORD                      10005
#define ANIM_TAG_SEED                       10006
#define ANIM_TAG_EXPLOSION_6                10007
#define ANIM_TAG_PINK_ORB                   10008 // unused
#define ANIM_TAG_GUST                       10009
#define ANIM_TAG_ICE_CUBE                   10010
#define ANIM_TAG_SPARK_2                    10011
#define ANIM_TAG_ORANGE                     10012 // unused
#define ANIM_TAG_YELLOW_BALL                10013
#define ANIM_TAG_LOCK_ON                    10014
#define ANIM_TAG_TIED_BAG                   10015
#define ANIM_TAG_BLACK_SMOKE                10016
#define ANIM_TAG_BLACK_BALL                 10017
#define ANIM_TAG_CONVERSION                 10018
#define ANIM_TAG_GLASS                      10019 // unused
#define ANIM_TAG_HORN_HIT                   10020
#define ANIM_TAG_HIT                        10021
#define ANIM_TAG_HIT_2                      10022
#define ANIM_TAG_BLUE_SHARDS                10023 // unused
#define ANIM_TAG_CLOSING_EYE                10024 // unused
#define ANIM_TAG_WAVING_HAND                10025 // unused
#define ANIM_TAG_HIT_DUPLICATE              10026 // unused
#define ANIM_TAG_LEER                       10027
#define ANIM_TAG_BLUE_BURST                 10028 // unused
#define ANIM_TAG_SMALL_EMBER                10029
#define ANIM_TAG_GRAY_SMOKE                 10030
#define ANIM_TAG_BLUE_STAR                  10031
#define ANIM_TAG_BUBBLE_BURST               10032
#define ANIM_TAG_FIRE                       10033
#define ANIM_TAG_SPINNING_FIRE              10034 // unused
#define ANIM_TAG_FIRE_PLUME                 10035
#define ANIM_TAG_LIGHTNING_2                10036 // unused
#define ANIM_TAG_LIGHTNING                  10037
#define ANIM_TAG_CLAW_SLASH_2               10038 // unused
#define ANIM_TAG_CLAW_SLASH                 10039
#define ANIM_TAG_SCRATCH_3                  10040 // unused
#define ANIM_TAG_SCRATCH_2                  10041 // unused
#define ANIM_TAG_BUBBLE_BURST_2             10042 // unused
#define ANIM_TAG_ICE_CHUNK                  10043
#define ANIM_TAG_GLASS_2                    10044 // unused
#define ANIM_TAG_PINK_HEART_2               10045 // unused
#define ANIM_TAG_SAP_DRIP                   10046 // unused
#define ANIM_TAG_SAP_DRIP_2                 10047 // unused
#define ANIM_TAG_SPARKLE_1                  10048
#define ANIM_TAG_SPARKLE_2                  10049
#define ANIM_TAG_HUMANOID_FOOT              10050
#define ANIM_TAG_MONSTER_FOOT               10051
#define ANIM_TAG_HUMANOID_HAND              10052 // unused
#define ANIM_TAG_NOISE_LINE                 10053
#define ANIM_TAG_YELLOW_UNK                 10054 // unused
#define ANIM_TAG_RED_FIST                   10055 // unused
#define ANIM_TAG_SLAM_HIT                   10056
#define ANIM_TAG_RING                       10057 // unused
#define ANIM_TAG_ROCKS                      10058
#define ANIM_TAG_Z                          10059 // unused
#define ANIM_TAG_YELLOW_UNK_2               10060 // unused
#define ANIM_TAG_AIR_SLASH                  10061 // unused
#define ANIM_TAG_SPINNING_GREEN_ORBS        10062 // unused
#define ANIM_TAG_LEAF                       10063
#define ANIM_TAG_FINGER                     10064
#define ANIM_TAG_POISON_POWDER              10065
#define ANIM_TAG_BROWN_TRIANGLE             10066 // unused
#define ANIM_TAG_SLEEP_POWDER               10067
#define ANIM_TAG_STUN_SPORE                 10068
#define ANIM_TAG_POWDER                     10069 // unused
#define ANIM_TAG_SPARKLE_3                  10070
#define ANIM_TAG_SPARKLE_4                  10071
#define ANIM_TAG_MUSIC_NOTES                10072
#define ANIM_TAG_DUCK                       10073
#define ANIM_TAG_MUD_SAND                   10074
#define ANIM_TAG_ALERT                      10075
#define ANIM_TAG_BLUE_FLAMES                10076 // unused
#define ANIM_TAG_BLUE_FLAMES_2              10077 // unused
#define ANIM_TAG_SHOCK_4                    10078 // unused
#define ANIM_TAG_SHOCK                      10079
#define ANIM_TAG_BELL_2                     10080 // unused
#define ANIM_TAG_PINK_GLOVE                 10081 // unused
#define ANIM_TAG_BLUE_LINES                 10082 // unused
#define ANIM_TAG_IMPACT_3                   10083 // unused
#define ANIM_TAG_IMPACT_2                   10084 // unused
#define ANIM_TAG_RETICLE                    10085 // unused
#define ANIM_TAG_BREATH                     10086
#define ANIM_TAG_ANGER                      10087
#define ANIM_TAG_SNOWBALL                   10088 // unused
#define ANIM_TAG_VINE                       10089 // unused
#define ANIM_TAG_SWORD_2                    10090 // unused
#define ANIM_TAG_CLAPPING                   10091 // unused
#define ANIM_TAG_RED_TUBE                   10092 // unused
#define ANIM_TAG_AMNESIA                    10093
#define ANIM_TAG_STRING_2                   10094 // unused
#define ANIM_TAG_PENCIL_2                   10095 // unused
#define ANIM_TAG_PETAL                      10096 // unused
#define ANIM_TAG_BENT_SPOON                 10097
#define ANIM_TAG_WEB                        10098 // unused
#define ANIM_TAG_MILK_BOTTLE                10099
#define ANIM_TAG_COIN                       10100
#define ANIM_TAG_CRACKED_EGG                10101 // unused
#define ANIM_TAG_HATCHED_EGG                10102 // unused
#define ANIM_TAG_FRESH_EGG                  10103 // unused
#define ANIM_TAG_FANGS                      10104 // unused
#define ANIM_TAG_EXPLOSION_2                10105 // unused
#define ANIM_TAG_EXPLOSION_3                10106 // unused
#define ANIM_TAG_WATER_DROPLET              10107 // unused
#define ANIM_TAG_WATER_DROPLET_2            10108 // unused
#define ANIM_TAG_SEED_2                     10109 // unused
#define ANIM_TAG_SPROUT                     10110 // unused
#define ANIM_TAG_RED_WAND                   10111 // unused
#define ANIM_TAG_PURPLE_GREEN_UNK           10112 // unused
#define ANIM_TAG_WATER_COLUMN               10113 // unused
#define ANIM_TAG_MUD_UNK                    10114 // unused
#define ANIM_TAG_RAIN_DROPS                 10115
#define ANIM_TAG_FURY_SWIPES                10116 // unused
#define ANIM_TAG_VINE_2                     10117 // unused
#define ANIM_TAG_TEETH                      10118 // unused
#define ANIM_TAG_BONE_2                     10119 // unused
#define ANIM_TAG_WHITE_BAG                  10120 // unused
#define ANIM_TAG_UNKNOWN                    10121 // unused
#define ANIM_TAG_PURPLE_CORAL               10122 // unused
#define ANIM_TAG_PURPLE_DROPLET             10123 // unused
#define ANIM_TAG_SHOCK_2                    10124 // unused
#define ANIM_TAG_CLOSING_EYE_2              10125 // unused
#define ANIM_TAG_METAL_BALL                 10126 // unused
#define ANIM_TAG_MONSTER_DOLL               10127 // unused
#define ANIM_TAG_WHIRLWIND                  10128 // unused
#define ANIM_TAG_WHIRLWIND_2                10129 // unused
#define ANIM_TAG_EXPLOSION_4                10130 // unused
#define ANIM_TAG_EXPLOSION_5                10131 // unused
#define ANIM_TAG_TONGUE                     10132 // unused
#define ANIM_TAG_SMOKE                      10133 // unused
#define ANIM_TAG_SMOKE_2                    10134 // unused
#define ANIM_TAG_IMPACT                     10135
#define ANIM_TAG_CIRCLE_IMPACT              10136
#define ANIM_TAG_SCRATCH                    10137
#define ANIM_TAG_CUT                        10138
#define ANIM_TAG_SHARP_TEETH                10139
#define ANIM_TAG_RAINBOW_RINGS              10140
#define ANIM_TAG_ICE_CRYSTALS               10141
#define ANIM_TAG_ICE_SPIKES                 10142
#define ANIM_TAG_HANDS_AND_FEET             10143
#define ANIM_TAG_MIST_CLOUD                 10144
#define ANIM_TAG_CLAMP                      10145
#define ANIM_TAG_BUBBLE                     10146
#define ANIM_TAG_ORBS                       10147
#define ANIM_TAG_WATER_IMPACT               10148
#define ANIM_TAG_WATER_ORB                  10149
#define ANIM_TAG_POISON_BUBBLE              10150
#define ANIM_TAG_TOXIC_BUBBLE               10151
#define ANIM_TAG_SPIKES                     10152
#define ANIM_TAG_HORN_HIT_2                 10153
#define ANIM_TAG_AIR_WAVE_2                 10154
#define ANIM_TAG_SMALL_BUBBLES              10155
#define ANIM_TAG_ROUND_SHADOW               10156
#define ANIM_TAG_SUNLIGHT                   10157
#define ANIM_TAG_SPORE                      10158
#define ANIM_TAG_FLOWER                     10159
#define ANIM_TAG_RAZOR_LEAF                 10160
#define ANIM_TAG_NEEDLE                     10161
#define ANIM_TAG_WHIRLWIND_LINES            10162
#define ANIM_TAG_GOLD_RING                  10163
#define ANIM_TAG_PURPLE_RING                10164
#define ANIM_TAG_BLUE_RING                  10165
#define ANIM_TAG_GREEN_LIGHT_WALL           10166
#define ANIM_TAG_BLUE_LIGHT_WALL            10167
#define ANIM_TAG_RED_LIGHT_WALL             10168
#define ANIM_TAG_GRAY_LIGHT_WALL            10169
#define ANIM_TAG_ORANGE_LIGHT_WALL          10170
#define ANIM_TAG_BLACK_BALL_2               10171
#define ANIM_TAG_PURPLE_GAS_CLOUD           10172
#define ANIM_TAG_SPARK_H                    10173
#define ANIM_TAG_YELLOW_STAR                10174
#define ANIM_TAG_LARGE_FRESH_EGG            10175
#define ANIM_TAG_SHADOW_BALL                10176
#define ANIM_TAG_LICK                       10177
#define ANIM_TAG_VOID_LINES                 10178
#define ANIM_TAG_STRING                     10179
#define ANIM_TAG_WEB_THREAD                 10180
#define ANIM_TAG_SPIDER_WEB                 10181
#define ANIM_TAG_LIGHTBULB                  10182 // unused
#define ANIM_TAG_SLASH                      10183
#define ANIM_TAG_FOCUS_ENERGY               10184
#define ANIM_TAG_SPHERE_TO_CUBE             10185
#define ANIM_TAG_TENDRILS                   10186
#define ANIM_TAG_EYE                        10187
#define ANIM_TAG_WHITE_SHADOW               10188
#define ANIM_TAG_TEAL_ALERT                 10189
#define ANIM_TAG_OPENING_EYE                10190
#define ANIM_TAG_ROUND_WHITE_HALO           10191
#define ANIM_TAG_FANG_ATTACK                10192
#define ANIM_TAG_PURPLE_HAND_OUTLINE        10193
#define ANIM_TAG_MOON                       10194
#define ANIM_TAG_GREEN_SPARKLE              10195
#define ANIM_TAG_SPIRAL                     10196
#define ANIM_TAG_SNORE_Z                    10197
#define ANIM_TAG_EXPLOSION                  10198
#define ANIM_TAG_NAIL                       10199
#define ANIM_TAG_GHOSTLY_SPIRIT             10200
#define ANIM_TAG_WARM_ROCK                  10201
#define ANIM_TAG_BREAKING_EGG               10202
#define ANIM_TAG_THIN_RING                  10203
#define ANIM_TAG_PUNCH_IMPACT               10204 // unused
#define ANIM_TAG_BELL                       10205
#define ANIM_TAG_MUSIC_NOTES_2              10206
#define ANIM_TAG_SPEED_DUST                 10207
#define ANIM_TAG_TORN_METAL                 10208
#define ANIM_TAG_THOUGHT_BUBBLE             10209
#define ANIM_TAG_MAGENTA_HEART              10210
#define ANIM_TAG_ELECTRIC_ORBS              10211
#define ANIM_TAG_CIRCLE_OF_LIGHT            10212
#define ANIM_TAG_ELECTRICITY                10213
#define ANIM_TAG_FINGER_2                   10214
#define ANIM_TAG_MOVEMENT_WAVES             10215
#define ANIM_TAG_RED_HEART                  10216
#define ANIM_TAG_RED_ORB                    10217
#define ANIM_TAG_EYE_SPARKLE                10218
#define ANIM_TAG_PINK_HEART                 10219
#define ANIM_TAG_ANGEL                      10220
#define ANIM_TAG_DEVIL                      10221
#define ANIM_TAG_SWIPE                      10222
#define ANIM_TAG_ROOTS                      10223
#define ANIM_TAG_ITEM_BAG                   10224
#define ANIM_TAG_JAGGED_MUSIC_NOTE          10225
#define ANIM_TAG_POKEBALL                   10226
#define ANIM_TAG_SPOTLIGHT                  10227
#define ANIM_TAG_LETTER_Z                   10228
#define ANIM_TAG_RAPID_SPIN                 10229
#define ANIM_TAG_TRI_ATTACK_TRIANGLE        10230
#define ANIM_TAG_WISP_ORB                   10231
#define ANIM_TAG_WISP_FIRE                  10232
#define ANIM_TAG_GOLD_STARS                 10233
#define ANIM_TAG_ECLIPSING_ORB              10234
#define ANIM_TAG_GRAY_ORB                   10235
#define ANIM_TAG_BLUE_ORB                   10236
#define ANIM_TAG_RED_ORB_2                  10237
#define ANIM_TAG_PINK_PETAL                 10238
#define ANIM_TAG_PAIN_SPLIT                 10239
#define ANIM_TAG_CONFETTI                   10240
#define ANIM_TAG_GREEN_STAR                 10241
#define ANIM_TAG_PINK_CLOUD                 10242
#define ANIM_TAG_SWEAT_DROP                 10243
#define ANIM_TAG_GUARD_RING                 10244
#define ANIM_TAG_PURPLE_SCRATCH             10245
#define ANIM_TAG_PURPLE_SWIPE               10246
#define ANIM_TAG_TAG_HAND                   10247
#define ANIM_TAG_SMALL_RED_EYE              10248
#define ANIM_TAG_HOLLOW_ORB                 10249
#define ANIM_TAG_X_SIGN                     10250
#define ANIM_TAG_BLUEGREEN_ORB              10251
#define ANIM_TAG_PAW_PRINT                  10252
#define ANIM_TAG_PURPLE_FLAME               10253
#define ANIM_TAG_RED_BALL                   10254
#define ANIM_TAG_SMELLINGSALT_EFFECT        10255
#define ANIM_TAG_METEOR                     10256
#define ANIM_TAG_FLAT_ROCK                  10257
#define ANIM_TAG_MAGNIFYING_GLASS           10258
#define ANIM_TAG_BROWN_ORB                  10259
#define ANIM_TAG_METAL_SOUND_WAVES          10260
#define ANIM_TAG_FLYING_DIRT                10261
#define ANIM_TAG_ICICLE_SPEAR               10262
#define ANIM_TAG_HAIL                       10263
#define ANIM_TAG_GLOWY_RED_ORB              10264
#define ANIM_TAG_GLOWY_GREEN_ORB            10265
#define ANIM_TAG_GREEN_SPIKE                10266
#define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT      10267
#define ANIM_TAG_GLOWY_BLUE_ORB             10268
#define ANIM_TAG_POKEBLOCK                  10269
#define ANIM_TAG_WHITE_FEATHER              10270
#define ANIM_TAG_SPARKLE_6                  10271
#define ANIM_TAG_SPLASH                     10272
#define ANIM_TAG_SWEAT_BEAD                 10273
#define ANIM_TAG_GEM_1                      10274 // unused
#define ANIM_TAG_GEM_2                      10275 // unused
#define ANIM_TAG_GEM_3                      10276 // unused
#define ANIM_TAG_SLAM_HIT_2                 10277
#define ANIM_TAG_RECYCLE                    10278
#define ANIM_TAG_RED_PARTICLES              10279 // unused
#define ANIM_TAG_PROTECT                    10280
#define ANIM_TAG_DIRT_MOUND                 10281
#define ANIM_TAG_SHOCK_3                    10282
#define ANIM_TAG_WEATHER_BALL               10283
#define ANIM_TAG_BIRD                       10284
#define ANIM_TAG_CROSS_IMPACT               10285
#define ANIM_TAG_SLASH_2                    10286
#define ANIM_TAG_WHIP_HIT                   10287
#define ANIM_TAG_BLUE_RING_2                10288
//new particles
#define ANIM_TAG_WHITE_STREAK               10289
#define ANIM_TAG_PURPLE_JAB                 10290
#define ANIM_TAG_TOXIC_SPIKES               10291
#define ANIM_TAG_ENERGY_BALL                10292
#define ANIM_TAG_SEED_BROWN                 10293
#define ANIM_TAG_FEINT                      10294
#define ANIM_TAG_MEGA_STONE                 10295
#define ANIM_TAG_MEGA_SYMBOL                10296
#define ANIM_TAG_MEGA_PARTICLES             10297
#define ANIM_TAG_TRUMP_CARD                 10298
#define ANIM_TAG_TRUMP_CARD_PARTICLES       10299
#define ANIM_TAG_ACCUPRESSURE               10300
#define ANIM_TAG_WRING_OUT                  10301
#define ANIM_TAG_COLORED_ORBS               10302
#define ANIM_TAG_WORRY_SEED                 10303
#define ANIM_TAG_SMALL_CLOUD                10304
#define ANIM_TAG_ATTACK_ORDER               10305
#define ANIM_TAG_DRAGON_PULSE               10306
#define ANIM_TAG_WOOD_HAMMER                10307
#define ANIM_TAG_PSYCHO_CUT                 10308
#define ANIM_TAG_POWER_GEM                  10309
#define ANIM_TAG_STONE_EDGE                 10310
#define ANIM_TAG_STEALTH_ROCK               10311
#define ANIM_TAG_POISON_JAB                 10312
#define ANIM_TAG_GREEN_POISON_BUBBLE        10313
#define ANIM_TAG_FLASH_CANNON_BALL          10314
#define ANIM_TAG_WATER_GUN                  10315
#define ANIM_TAG_PUNISHMENT_BLADES          10316
#define ANIM_TAG_QUICK_GUARD_HAND           10317

#define ANIM_TAG_SHELL_RIGHT                10318
#define ANIM_TAG_SHELL_LEFT                 10319
#define ANIM_TAG_RAZOR_SHELL                10320
#define ANIM_TAG_HYDRO_PUMP                 10321
#define ANIM_TAG_BRINE                      10322
#define ANIM_TAG_GEAR                       10323
#define ANIM_TAG_ASSURANCE_HAND             10324
#define ANIM_TAG_ACUPRESSURE_FINGER         10325
#define ANIM_TAG_WISHIWASHI_FISH            10326
#define ANIM_TAG_ZYGARDE_HEXES              10327
#define ANIM_TAG_AURA_SPHERE                10328
#define ANIM_TAG_OMEGA_STONE                10329
#define ANIM_TAG_ALPHA_STONE                10330
#define ANIM_TAG_BERRY_NORMAL               10331
#define ANIM_TAG_BERRY_EATEN                10332
#define ANIM_TAG_DRAGON_ASCENT              10333
#define ANIM_TAG_PINK_DIAMOND               10334
#define ANIM_TAG_STEAM_ERUPTION             10335
#define ANIM_TAG_CONFIDE                    10336
#define ANIM_TAG_VERTICAL_HEX               10337
#define ANIM_TAG_UNAVAILABLE_1              10338  //0x2862.. supposedly used elsewhere?
#define ANIM_TAG_UNAVAILABLE_2              10339
#define ANIM_TAG_POWER_TRICK                10340
#define ANIM_TAG_CHAIN_LINK                 10341
#define ANIM_TAG_ANCHOR                     10342
#define ANIM_TAG_HORSESHOE_SIDE_FIST        10343
#define ANIM_TAG_DRAGON_ASCENT_FOE          10344
#define ANIM_TAG_CRAFTY_SHIELD              10345
#define ANIM_TAG_BLACEPHALON_HEAD           10346
#define ANIM_TAG_FAIRY_LOCK_CHAINS          10347
#define ANIM_TAG_IONS                       10348
#define ANIM_TAG_CHOP                       10349
#define ANIM_TAG_HEART_STAMP                10350
#define ANIM_TAG_HORN_LEECH                 10351
#define ANIM_TAG_STEAMROLLER                10352
#define ANIM_TAG_HOOPA_HAND                 10353
#define ANIM_TAG_HOOPA_RING                 10354
#define ANIM_TAG_METAL_BITS                 10355
#define ANIM_TAG_SMALL_ROCK                 10356
#define ANIM_TAG_SPIRIT_ARROW               10357
#define ANIM_TAG_ULTRA_BURST_SYMBOL         10358
#define ANIM_TAG_Z_MOVE_SYMBOL              10359
#define ANIM_TAG_REALLY_BIG_ROCK            10360
#define ANIM_TAG_COCOON                     10361
#define ANIM_TAG_CORKSCREW                  10362
#define ANIM_TAG_HAVOC_SPEAR                10363
#define ANIM_TAG_PURPLE_DRAKE               10364
#define ANIM_TAG_MUD_BOMB                   10365
#define ANIM_TAG_BRANCH                     10366
#define ANIM_TAG_APPLE                      10367
#define ANIM_TAG_OBSTRUCT_CROSS             10368
#define ANIM_TAG_POISON_COLUMN              10369
#define ANIM_TAG_GARBAGE_COLUMN             10370
#define ANIM_TAG_LARGE_SPIKE                10371
#define ANIM_TAG_DRAGON_PULSE_RING          10372
#define ANIM_TAG_STONE_PILLAR               10373
#define ANIM_TAG_MUSHROOM                   10374
#define ANIM_TAG_GOLDEN_APPLE               10375
#define ANIM_TAG_ICE_ROCK                   10376
#define ANIM_TAG_TORNADO                    10377
#define ANIM_TAG_STRAIGHT_BEAM              10378
#define ANIM_TAG_DREEPY                     10379
#define ANIM_TAG_ICE_ROCK_SINGLE            10380
#define ANIM_TAG_STONE_PILLAR_MULTI         10381
#define ANIM_TAG_WOOD                       10382

// battlers
#define ANIM_ATTACKER    0
#define ANIM_TARGET      1
#define ANIM_ATK_PARTNER 2
#define ANIM_DEF_PARTNER 3

// stereo panning constants [0-255]
//
//          0
//         .  .
//      .        .
// 192 .          . 63
//     .          .
//      .        .
//         .  .
//          127
//
#define SOUND_PAN_ATTACKER -64
#define SOUND_PAN_TARGET    63

// move background ids
#define BG_DARK_ 0 // the same as BG_DARK but is unused
#define BG_DARK 1
#define BG_GHOST 2
#define BG_PSYCHIC 3
#define BG_IMPACT_OPPONENT 4
#define BG_IMPACT_PLAYER 5
#define BG_IMPACT_CONTESTS 6
#define BG_DRILL 7
#define BG_DRILL_CONTESTS 8
#define BG_HIGHSPEED_OPPONENT 9
#define BG_HIGHSPEED_PLAYER 10
#define BG_THUNDER 11
#define BG_GUILLOTINE_OPPONENT 12
#define BG_GUILLOTINE_PLAYER 13
#define BG_GUILLOTINE_CONTESTS 14
#define BG_ICE 15
#define BG_COSMIC 16
#define BG_IN_AIR 17
#define BG_SKY 18
#define BG_SKY_CONTESTS 19
#define BG_AURORA 20
#define BG_FISSURE 21
#define BG_BUG_OPPONENT 22
#define BG_BUG_PLAYER 23
#define BG_SOLARBEAM_OPPONENT 24
#define BG_SOLARBEAM_PLAYER 25
#define BG_SOLARBEAM_CONTESTS 26
#define BG_MAGMA_STORM 27
#define BG_GIGA_IMPACT_OPPONENT 28
#define BG_GIGA_IMPACT_PLAYER 29
#define BG_GIGA_IMPACT_CONTEST 30
#define BG_TRICK_ROOM 31
#define BG_ROCK_WRECKER 32
#define BG_SPACIAL_REND_ON_OPPONENT 33
#define BG_SPACIAL_REND_ON_PLAYER 34
#define BG_DARK_VOID 35

#define BG_WATER                                36
#define BG_NIGHTMARE                            37
#define BG_LEAF_STORM                           38
#define BG_FIRE                                 39
#define BG_FIRE_2                               40
#define BG_WATER_2                              41
#define BG_POISON                               42
#define BG_AEROBLAST                            43
#define BG_HIGH_SPEED                           44  //hurricane, close combat
#define BG_ELECTRIC_TERRAIN                     45
#define BG_GRASSY_TERRAIN                       46
#define BG_MISTY_TERRAIN                        47
#define BG_PSYCHIC_TERRAIN                      48
#define BG_FOCUS_BLAST                          49
#define BG_GUNK_SHOT                            50
#define BG_HYDRO_CANNON                         51
#define BG_WONDER_ROOM                          52
#define BG_MAGIC_ROOM                           53
#define BG_HYPERSPACE_FURY                      54
#define BG_BOLT_STRIKE                          55
#define BG_ZMOVE_ACTIVATE                       56
#define BG_TECTONIC_RAGE                        57
#define BG_BLUE_SKY_DAY                         58
#define BG_BLUE_SKY_AFTERNOON                   59
#define BG_BLUE_SKY_NIGHT                       60
#define BG_ZMOVE_MOUNTAIN                       61
#define BG_NEVERENDING_NIGHTMARE                62
#define BG_WATER_PULSE                          63
#define BG_INFERNO_OVERDRIVE                    64
#define BG_BLOOM_DOOM                           65
#define BG_SHATTERED_PSYCHE                     66
#define BG_TWINKLE_TACKLE                       67
#define BG_BLACKHOLE_ECLIPSE                    68
#define BG_SOULSTEALING_7STAR_STRIKE            69
#define BG_MALICIOUS_MOONSAULT                  70
#define BG_CLANGOROUS_SOULBLAZE                 71
#define BG_SNUGGLE_FOREVER                      72
#define BG_MAX_LIGHTNING                        73
#define BG_GARBAGE_FALLS                        74
#define BG_HYPER_BEAM                           75
#define BG_DYNAMAX_CANNON                       76
#define BG_AURA_SPHERE                          77

// table ids for general animations
#define B_ANIM_CASTFORM_CHANGE          0x0
#define B_ANIM_STATS_CHANGE             0x1
#define B_ANIM_SUBSTITUTE_FADE          0x2
#define B_ANIM_SUBSTITUTE_APPEAR        0x3
#define B_ANIM_POKEBLOCK_THROW          0x4
#define B_ANIM_ITEM_KNOCKOFF            0x5
#define B_ANIM_TURN_TRAP                0x6
#define B_ANIM_HELD_ITEM_EFFECT         0x7
#define B_ANIM_SMOKEBALL_ESCAPE         0x8
#define B_ANIM_HANGED_ON                0x9
#define B_ANIM_RAIN_CONTINUES           0xA
#define B_ANIM_SUN_CONTINUES            0xB
#define B_ANIM_SANDSTORM_CONTINUES      0xC
#define B_ANIM_HAIL_CONTINUES           0xD
#define B_ANIM_LEECH_SEED_DRAIN         0xE
#define B_ANIM_MON_HIT                  0xF
#define B_ANIM_ITEM_STEAL               0x10
#define B_ANIM_SNATCH_MOVE              0x11
#define B_ANIM_FUTURE_SIGHT_HIT         0x12
#define B_ANIM_DOOM_DESIRE_HIT          0x13
#define B_ANIM_FOCUS_PUNCH_SETUP        0x14
#define B_ANIM_INGRAIN_HEAL             0x15
#define B_ANIM_WISH_HEAL                0x16
#define B_ANIM_MEGA_EVOLUTION           0x17
#define B_ANIM_TERRAIN_MISTY            0x18
#define B_ANIM_TERRAIN_GRASSY           0x19
#define B_ANIM_TERRAIN_ELECTRIC         0x1A
#define B_ANIM_TERRAIN_PSYCHIC          0x1B
#define B_ANIM_ILLUSION_OFF             0x1C
#define B_ANIM_FORM_CHANGE              0x1D
#define B_ANIM_SLIDE_OFFSCREEN          0x1E // for Emergency Exit
#define B_ANIM_DYNAMAX_EVOLUTION        0x1F // dynamax
#define B_ANIM_RESTORE_BG               0x20 // for Terrain Endings
#define B_ANIM_TOTEM_FLARE              0x21 // Totem boosts aura flare
#define B_ANIM_ZMOVE_ACTIVATE           0x22 // Using Z Moves
#define B_ANIM_PRIMAL_GROUDON           0x23 // 固拉多原始回归
#define B_ANIM_PRIMAL_KYOGRE            0x24 // 盖欧卡原始回归
#define B_ANIM_ELI_REINF                0x25 // 神兽消强
#define B_ANIM_GROUDON_REALM            0x26 // 固拉多领域

// special animations table
#define B_ANIM_LVL_UP                   0x0
#define B_ANIM_SWITCH_OUT_PLAYER_MON    0x1
#define B_ANIM_SWITCH_OUT_OPPONENT_MON  0x2
#define B_ANIM_BALL_THROW               0x3
#define B_ANIM_BALL_THROW_WITH_TRAINER  0x4
#define B_ANIM_SUBSTITUTE_TO_MON        0x5
#define B_ANIM_MON_TO_SUBSTITUTE        0x6
#define B_ANIM_CRITICAL_CAPTURE_THROW   0x7

// status animation table
#define B_ANIM_STATUS_PSN               0x0
#define B_ANIM_STATUS_CONFUSION         0x1
#define B_ANIM_STATUS_BRN               0x2
#define B_ANIM_STATUS_INFATUATION       0x3
#define B_ANIM_STATUS_SLP               0x4
#define B_ANIM_STATUS_PRZ               0x5
#define B_ANIM_STATUS_FRZ               0x6
#define B_ANIM_STATUS_CURSED            0x7
#define B_ANIM_STATUS_NIGHTMARE         0x8
#define B_ANIM_STATUS_WRAPPED           0x9 // does not actually exist

// Tasks with return values often assign them to gBattleAnimArgs[7].
#define ARG_RET_ID 7

// Trapping Wrap-like moves end turn animation.
#define TRAP_ANIM_BIND 0
#define TRAP_ANIM_WRAP 0
#define TRAP_ANIM_FIRE_SPIN 1
#define TRAP_ANIM_WHIRLPOOL 2
#define TRAP_ANIM_CLAMP 3
#define TRAP_ANIM_SAND_TOMB 4

// Weather defines for battle animation scripts.
#define ANIM_WEATHER_NONE 0
#define ANIM_WEATHER_SUN 1
#define ANIM_WEATHER_RAIN 2
#define ANIM_WEATHER_SANDSTORM 3
#define ANIM_WEATHER_HAIL 4

// Battle mon back animations.
#define BACK_ANIM_NONE                         0x00
#define BACK_ANIM_H_SLIDE_QUICK                0x01
#define BACK_ANIM_H_SLIDE                      0x02
#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1    0x03
#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2    0x04
#define BACK_ANIM_SHRINK_GROW_1                0x05
#define BACK_ANIM_GROW_1                       0x06
#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
#define BACK_ANIM_HORIZONTAL_SHAKE             0x08
#define BACK_ANIM_VERTICAL_SHAKE               0x09
#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE         0x0a
#define BACK_ANIM_VERTICAL_STRETCH             0x0b
#define BACK_ANIM_HORIZONTAL_STRETCH           0x0c
#define BACK_ANIM_GROW_2                       0x0d
#define BACK_ANIM_V_SHAKE_WITH_PAUSE           0x0e
#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE        0x0f
#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL  0x10
#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE  0x11
#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE    0x12
#define BACK_ANIM_DIP_RIGHT_SIDE               0x13
#define BACK_ANIM_SHRINK_GROW_2                0x14
#define BACK_ANIM_JOLT_RIGHT                   0x15
#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE      0x16
#define BACK_ANIM_FADE_RED_WITH_SHAKE          0x17
#define BACK_ANIM_FADE_GREEN_WITH_SHAKE        0x18
#define BACK_ANIM_FADE_BLUE_WITH_SHAKE         0x19

// mon pal blend
#define ANIM_PAL_BG             0x1
#define ANIM_PAL_ATK            0x2
#define ANIM_PAL_DEF            0x4
#define ANIM_PAL_ATK_PARTNER    0x8
#define ANIM_PAL_DEF_PARTNER    0x10
#define ANIM_PAL_ALL            0x1f
#define ANIM_PAL_BG_4           0x20
#define ANIM_PAL_BG_5           0x40
#define ANIM_PAL_ALL_BATTLERS   0x780
#define ANIM_PAL_PLAYER1        0x80
#define ANIM_PAL_PLAYER2        0x100
#define ANIM_PAL_OPPONENT1      0x200
#define ANIM_PAL_OPPONENT2      0x400

// horseshoe/fist frames
#define ANIM_RIGHT_FIST  0
#define ANIM_LEFT_FIST   2

// fist/chop frames
#define ANIM_FIST_1  0
#define ANIM_FOOT_1  1
#define ANIM_FOOT_2  2
#define ANIM_CHOP    3
// surf wave palettes
#define ANIM_SURF_PAL_SURF           0
#define ANIM_SURF_PAL_MUDDY_WATER    1
#define ANIM_SURF_PAL_SLUDGE_WAVE    2


#endif // GUARD_CONSTANTS_BATTLE_ANIM_H
